export namespace SysMenu {
  export interface SysMenu {
    id?: number;

    parentId: number;

    title: string;

    name: string;

    code?: string;

    category?: string;

    menuType: string;

    path: string;

    component: string | (() => Promise<unknown>);

    sortCode?: number;
    icon?: string;
    isHide?: boolean;
    isKeepAlive?: boolean;
    isLink?: boolean;
    link?: string;
    isFull?: boolean;
    isAffix?: boolean;
    activeMenu?: string;

    children?: Array<SysMenuInfo>;
  }
  /**
   *
   * @export
   * @interface SysMenuInfo
   */
  export interface SysMenuInfo {
    id: number;

    parentId: number;

    title: string;

    name: string;

    code: string;

    category: string;

    menuType: string;

    path: string;

    component: string | (() => Promise<unknown>);

    sortCode: number;

    children?: Array<SysMenuInfo>;

    meta: MenuMeta;
  }
  /**
   *
   * @export
   * @interface MenuMeta
   */
  export interface MenuMeta {
    title: string;
    icon: string;
    isHide: boolean;
    isKeepAlive: boolean;
    isLink: boolean;
    link: string;
    isFull: boolean;
    isAffix: boolean;
    activeMenu: string;
  }
  /**
   *
   * @export
   * @interface ApiResource
   */
  export interface ApiResource {
    //分组
    group?: string;
    /// <summary>
    /// 控制器路由
    /// </summary>
    controller?: string;

    /// <summary>
    /// 接口描述
    /// </summary>
    apiName?: string;

    /// <summary>
    /// 接口地址
    /// </summary>
    apiRoute?: string;

    /// <summary>
    /// 资源名称[apiName+apiRoute]
    /// </summary>
    resourceName?: string;

    //是否需要设置数据范围
    isDataScope?: boolean;
    dataScopeType?: string;
    defineScopeOrgList?: Array<number>;
  }
  /**
   *
   * @export
   * @interface MenuInput
   */
  export interface MenuInput {
    id?: number;
    name?: string;

    code?: string;

    category?: string;

    component?: string;

    icon?: string;

    color?: string;

    isKeepAlive?: boolean;

    isHide?: boolean;

    isLink?: boolean;

    link?: string;

    sortCode?: number;

    parentId?: number;

    title?: string;

    menuType?: string;

    path?: string;
    isFull?: boolean;
    isAffix?: boolean;
    activeMenu?: string;
  }

  /**
   *
   * @export
   * @interface ResourceInfo
   */
  export interface ResourceInfo {
    apiRoute?: string;
    dataScopeType?: string;
    defineScopeOrgList?: Array<number>;
  }
  export interface MeunAndButtonList {
    buttons: string[];
    menuList: SysMenuInfo[];
  }
}
